#include <iostream>
#include <cmath>

void prime_factor(int n){
    // 1. 除去所有2的倍数的因子
    while(n%2 == 0) n /= 2;

    // 2.经过上述操作，此时n为奇数，并且不存在偶数的素因子
    // 所以遍历时跳过所有偶数
    for(int i=3; i < std::sqrt(n); i += 2){
        while (n%i == 0) n /= i;
        std::cout << i << " ";
    }
    
    if (n > 2) std::cout << n <<" ";
    std::cout << "2\n";
}

int main(){
    prime_factor(54);
    return 0;
}